import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';

import { User } from './user/entities/user.entity';
import { Profile } from './user/entities/profile.entity';
import { Roles } from './user/entities/roles.entity';
import { Logs } from './user/entities/logs.entity';
// import { LoggerModule } from 'nestjs-pino';
import { LoginModule } from './login/login.module';

/**
 * @Module装饰器
 * 用于定义一个模块，它包含了一组相关的控制器、服务和其他模块
 * imports: 导入其他模块，这些模块提供了应用程序所需的功能
 * controllers: 定义了一组控制器，它们处理HTTP请求并返回响应
 * providers: 定义了一组服务，它们提供了应用程序的业务逻辑
 * exports: 导出一组服务，以便其他模块可以使用它们
 */
@Module({
  imports: [
    ConfigModule.forRoot({ isGlobal: true }),
    UserModule,
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: '123456',
      database: 'test',
      entities: [User, Profile, Roles, Logs],
      logging: ['error'],
      synchronize: true,
    }),
    // LoggerModule.forRoot({
    //   pinoHttp: {
    //     transport: {
    //       target: 'pino-pretty',
    //       options: {
    //         colorize: true,
    //       },
    //     },
    //   },
    // }),

    LoginModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
